JavaScript

RegExp.prototype[@@replace]() メソッド

 編集:2022.08.22 by T.A.

[Edge]。→

その RegExp のパターンで指定文字列に一致した部分を指定の置換文字列で置換して結果の文字列を返します。

置換文字列の代わりに関数を指定することも可能です。

構文
RegExp[Symbol.replace](str, newSubStr|function)
RegExp RegExp。またはリテラル表記。
str 置換の対象となる String です。
newSubStr 置換内容。String。特殊な置換パターンの数値に対応しています。String.prototype.replace() ページの引数としての文字列の指定の節を参照してください。
function 置換内容。新しい部分文字列を生成するために呼び出される関数。この関数に提供される引数については、String.prototype.replace() ページの引数としての関数の指定の節を見てください。
戻り値

文字列です。

解説

このメソッドは String.prototype.replace() の中で、pattern 引数が RegExp オブジェクトであった場合に内部的に呼び出されます。たとえば、次の 2 つの例は同じ結果を返します。

String.prototype.replace() は pattern 引数が RegExp オブジェクトではない場合、このメソッドの呼び出しや RegExp オブジェクトの生成を行いません。

RE=/a/;
S='ABCabcabc';
D=RE[Symbol.replace](S, '●'); //=[string]:ABC●bcabc

RE=/a/gi;
S='ABCabcabc';
D=RE[Symbol.replace](S, '●'); //=[string]:●BC●bc●bc
function F(){
  alert(arguments[0]); //表示:"A"、"a"、"a"。
  return "●";
}
S='ABCabcabc';
D=/a/gi[Symbol.replace](S, F); //=[string]:●BC●bc●bc
S='ABCabcabc';
D=/a/gi[Symbol.replace](S, function(P1){
  alert(P1); //表示:"A"、"a"、"a"。
  return "●";
}); //=[string]:●BC●bc●bc
S='ABCabcabc';
D=/a/gi[Symbol.replace](S, P1 => {
  alert(P1); //表示:"A"、"a"、"a"。
  return "●";
}); //=[string]:●BC●bc●bc

テスト